home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
progtool
/
basic
/
gbnckon8
/
gfabgnuc.fsk
< prev
next >
Wrap
Text File
|
1995-11-25
|
25KB
|
657 lines
FcS >76751400 < Kontrollcode fuer Steuerungsdatei
0123456789012
**********************************************************************
** Konverterdatei fuer die Quellsprache GFA-BASIC 3.5 Atari ST **
** nach GNU-C unter PC-Linux 1.0.9 unter Vorraussetzung einer schon **
** installierten VGALIB-Library (mind. Version 1.2) **
** und unter Nutzung eigener Prozeduren fuer die benoetigten **
** GFA-Basic-Befehle (oder einer vorhandenen Library, z. B. der **
** 'FSLIBGFA'-Library) **
** Diese Konverterdatei beinhaltet das automatische Erstellen eines **
** Makefiles fuer Linux und das Erstellen einer Datei mit dem Quell-**
** code, welcher aus einer anderen Sprache heraus uebersetzt wurde, **
** in unserem Fall aus GFA-Basic 3.5 heraus. **
** Als Quelldatei benoetigt mein T U N I X-(Tue Nichts-)Konverter **
** nur das Basicprogramm als *.LST Datei (Endung unwichtig, jedoch **
** ASCII-Format!! **
** Ziel des Konverters: Zielprogramm (C-Prg) ohne JEGLICHE manuelle **
** Anpassungen direkt compilierbar **
** Status des Konverters: Ziel absolut realisierbar, bis Heute ca. **
** 70%-iger Deckungsgrad des GFA-Basic 3.5- **
** Befehlssatzes erreicht, bis Ende 1995 **
** moeglichst nahe bei 100% **
** Status der Library : (FSLIBGFA) bis Heute ca. 60% erreicht, **
** jedoch hat der Anwender die Möglichkeit, **
** dringend benötigte Befehle selbst zu **
** ergänzen **
** Bemerkung: **
** 70% und 60% hoeren sich schlimmer an, als es ist, da damit fast **
** alle haeufig vorkommenden Befehle vollstaendig abgedeckt sind. **
** Beispiel: seit Anfang Mai 1995 konvertiert sich der Konverter **
** selbst 1:1 von 4503 GFA-Basic-Zeilen in 5118 C-Zeilen **
** und laesst sich ohne manuelle Aenderungen fehlerfrei **
** compilieren. Erscheinungsbild 100% identisch unter **
** Linux (Farben, Aufloesung, Grafik, Dateien), nur die **
** FILESELECT-Box (Eigenentwicklung) besitzt mein etwas **
** eigenwilliges Design. **
** Fuer Interessierte ist dieser Konverter fuer 90 DM zzgl. Mwst. **
** zu erhalten. (90 statt 55, derweil darin auch eine Supportunter- **
** stuetzung von mir (telefonisch/schriftlich) fuer die In- **
** stallation unter schwierigen/individuellen Linux-Konfigurationen **
** enthalten ist (abends MO-FR 19:00-20:00), schriftlich immer. **
** Fuer diejenigen, die sich sehr gut unter Linux auskennen (schon **
** Kernelergaenzungen, DOS-Emulatorveraenderungen oder X-Windows-C- **
** Programme erstellt/durchgefuehrt haben), gibts natuerlich den **
** Compiler fuer 55,- DM. (Dann jedoch keine Supportunterstuetzung) **
** Fehlermeldungen von allen Seiten sind erwuenscht: **
** Bitte kleinere Programme (10-50 Zeilen maximal) mir zukommen **
** lassen (schriftlich oder auf Diskette), welche nicht sauber **
** konvertiert werden. Fehler werden schnellstmoeglich behoben. **
** **
** Fuer dieses Jahr noch geplant: **
** - Die momentan fehlende GEM-/VDI-/AES-Routinen-Unterstuetzung **
** wird zukuenftig durch den Konverter in X-Windows-Unterstuetzung**
** umgewandelt (Vorraussetzung dann aber statt VGALIB1.2: Ygl- **
** Library!!) **
** **
** - Sobald GFA-Basic 3.5 abgedeckt ist, mache ich mich an Omikron **
** Basic **
** **
**------------------------------------------------------------------**
** Fuer Neulinge im Linux-Bereich bzw. GNU-C-Bereich: **
** Komplette Entwicklungsumgebung Linux-System+GNU-C+VGALIB+Uties+ **
** Doku in Dateiform **
** gibts von mir auf momentan 12 Disketten ein Minimalsystem fuer **
** 25 DM,- Unkostenbeitrag (enthaelt Kosten fuer Disketten & **
** Kopieren & eine Installationsanleitung von mir (10 Seiten)) **
** Benoetigt werden mindestens: PC-486DX33, 8 MB, 60 MB frei **
** fuer Kaffeetrinker genuegt : PC-386SX16, 4 MB, 70 MB frei **
** MEINE EMPFEHLUNG JEDOCH (anstelle meiner Minimalausstattung): **
** a- wenn Ihr Englisch koennt: bestellt Euch: **
** 4er-Pack CD-Rom (ca 3.x GB entpackt) InfoMagic **
** Linux Developer's Ressource 39,- DM **
** b- fuer alle Deutschfreaks : bestellt Euch: **
** 3er-Pack CD-Rom (ca 2.x GB entpackt) S.u.S.E. **
** S.u.S.E. Linux (April '95 oder neuer) 89,- DM **
** a- & b- BEI: **
** S.u.S.E. GmbH Tel. 0911/7405331 Bestellannahme **
** Gebhardtstr. 2 **
** 90762 Fürth **
** Erkundigt Euch am Besten telefonisch nach den aktuellen Preisen! **
**********************************************************************
** In dieser Konverterdatei werden alle Zeilen vom Konverter ig- **
** noriert, ausser denen, die mit **
** *01 bis *99 -> Sonderfunktionen **
** und , beginnen. -> Befehlsbeschreibungen **
** und Verarbeitungmethoden **
**********************************************************************
Byte 01..02: Prozedure-Nummer (-ID),wo gefunden
Byte 03..03: LOCAL-Kennzeichen
(=0: Keine mit LOCAL declarierte Variable)
Byte 04..04: Vartyp
vartyp&=0: Fließkomma
=1: % (int long)
=2: & (int)
=3: ! (zeiger)
=4: (float)
=9: String
=+100: ARRAY
=+200: Selbst eine Prozedur
Byte 05..24: Varname vorher
kprg:
.qdn.: Label fuer Quelldateiname (Automatik)
.zdn.: Label fuer Zieldateiname (Automatik)
.kdn.: Label fuer Konvertierungsdateiname (Automatik)
.mdn.: Label fuer Makedateiname (Automatik)
.edn.: Label fuer Ergebnisdateiname (Automatik)
*mc: Microcodezeilen
*mc.gbntcon. 0001. !Befehl zum Einschalten des Microcodeinterpreters
*mc.gbntcoff.0002. !Befehl zum Ausschalten des Microcodeinterpreters
*mc.set. 0003.
*mc.qdn. 0021. !Quelldateiname
*mc.zdn. 0022. !Zieldateiname
*mc.kdn. 0023. !Konverterdateiname
*mc.mdn. 0024. !Makefilename
*mc.edn. 0025. !Ergebnisdateiname
*mc.scrst. 0030. !Startaufloesung, =1: 640x200x16
*mc.T. 0100. !Definiert Textbereich ab jeweiliger Position
*mc.0gv. 0200. !zeile_globalvarst%=zz&+1
*mc.0zm. 0201. !zeiger_main&=1
*mc.0zn. 0202. !zeile_main%=zz&+1
*mc.0zs. 0203. !zeilen_spalte%=2
*mc.0zz. 0204. !zz&=0
*mc.ona. 0300. !on after zeilen, nur wenn on after aktiviert
*mc.onb. 0301. !on break zeilen, nur wenn on break aktiviert
*mc.one. 0302. !on error zeilen, nur wenn on error aktiviert
*mc.onv. 0303. !on every zeilen, nur wenn on every aktiviert
*mc.Uqd. 0401. !UPPER$(quelldateiname$)
*mc.Uzd. 0402. !UPPER$(zieldateiname$)
*mc.Ued. 0405. !UPPER$(ergedateiname$)
*mc.Lqd. 0421. !LOWER$(quelldateiname$)
*mc.Lzd. 0422. !LOWER$(zieldateiname$)
*mc.Led. 0425. !LOWER$(ergedateiname$)
*mc.kvz. 0501. !v.kvz.&
*mc.vtrp. 0502. !v.vtrp.&
*mc.vzu. 0503. !z.vzu.& ASCII
*mc.sop. 0504. !z.sop.&
*mc.fkt. 0505. !z.fkt.&
*mc.ekz. 0506. !v.ekz.& ASCII
*mc.zv. 0507. !v.zv.&
*mc.kvz. 0508. !v.kvz.&
*mc.fkta. 0509. !v.fkta.&
*mc.sond. 0510. !v.sond.&
*mc.func. 0511. !v.func.&
*mc.spec. 0512. !v.spec.&
*mc.uprgz. 0512. !z.uprg.&
*mc.uprg. 0512. !v.uprg.&
*mc.sv001. 1001. !zeilen_spalte%
*mc.sv002. 1002. !zeilen_spalte_danach%
*mc.sv003. 1003. !zq&
*mc.sv004. 1004. !zz&
*mc.sv101. 1101. !ergebnis$
*mc.sv102. 1102. !obj$
*mc.sv103. 1103. !p$
*mc.sv104. 1104. !obj$
*mc.sv111. 1111. !lysekauf&
*mc.sv112. 1112. !lysektyp$
*mc.sv121. 1121. !ersatz$
*mc.sv122. 1122. !zusatz$
*mc.sv123. 1123. !typen$
*mc.sv124. 1124. !vmaske$
*mc.sv125. 1125. !nmaske$
*02: Beschreibung der gueltigen Variablentypen und ihrer Kennung
im Quell- und Zielcode
1.+2. Zeichen: 00-99: Variablentyp-Kennziffer
3. Zeichen: kennzeichnendes Zeichen dieses Variablentyps im
im Quellcode
4. Zeichen: kennzeichnendes Zeichen im Zielcode
5.+6. Zeichen: Maske fuer Variablenaufbereitung (z.B. printf)
ab 7. Zeichen: Zielcode fuer Variablendeklaration
*03: Zeichenketten ALT <-> NEU, welche waehrend Konvertierung
1:1 ersetzt werden sollen, ALT und NEU sind durch ,, zu trennen
*04: Beschreibung des zulaessigen Variablennamenaufbaus bzw.
Befehlsnamenaufbaus
jedes zulaessige Zeichen wie folgt definiert:
1. Zeichen: =1: ab erstem Zeichen des Namens zulaessig
=2: erst ab zweitem Zeichen des Namens zulaessig
=3: nur als letztes Zeichen des Namens zulaessig
2. Zeichen: zulaessiges Zeichen Quellcode
3.(+4.) Z.: zulaessige(s) Zeichen Zielcode
->mehrere Definitionen koennen durch ,, voneinander getrennt werden
*vs.0zz./* Quellprogramm GFA-BASIC: .Uqd. */
*vs/* Zielprogramm C : .Lzd. */
*vs
*vs#include "fslibgfa.h"
*vs
*vsextern unsigned char *gfapars[];extern double gfaparn[];
*vsunsigned char *gfazki;
*vs
*vsint gfaindex=0;
*vsdouble gfan=0;
*vsunsigned char *gfas;
*vs.0gv.
*vs.0zm.
===>*F002: An dieser Stelle die Array- und Variableninitialisierung einfuegen
*vsvoid main()
*vs{ /* Start von Main */
*vs.0zs.gfa_open();
*vsSCREEN(.scrst.);
===> Ab dieser Zeile alles um <N>=2 Zeichen weiter nach rechts
*vsgfas=GFAIS(0);gfazki=malloc(256);
*vs
*vs.0zn.
*vsSHOWM();
===> Ab dieser Zeile generierten Programmcode einfuegen
===> Ab der naechsten Zeile NACHSPANN
*ns.0szs2.
*nsgfa_close();
*ns.0szs2.
*ns} /* Ende von Main */
*ns.ona.void gfaonafter()
*ns.ona.{
*ns.ona.}
*ns.onb.void gfaonbreak()
*ns.onb.{
*ns.onb.}
*ns.one.void gfaonerror()
*ns.one.{
*ns.one.}
*ns.onv.void gfaonevery()
*ns.onv.{
*ns.onv.}
===> *mf: Definition eines Makefiles
*mfBINDIR = /usr/bin
*mfCC = gcc
*mfMAKE = make
*mfCFLAGS = -O2
*mfSTRIP = -s
*mfTEST_LIBS = -lvga -lm
*mfall : test
*mfTEST_OBJS = test.o fslibgfa.o fspecial.o
*mftest : $(TEST_OBJS)
*mf $(CC) $(STRIP) $(CFLAGS) -o test $(TEST_OBJS) $(TEST_LIBS)
*mfinstall : all
*mf install -m 4511 test $(BINDIR)
*mf chmod a+r /dev/tty0
*mfclean :
*mf rm -f test.o *~ test
*mffspecial.o : fspecial.c fspecial.h
*mftest.o : test.c fslibgfa.h
*mf
*0200--%s
*0201%L%dlong
*0202&I%dint
*0203!B%dint
*0204FF%ffloat
*0209$S%sunsigned char *
*03popen(,,popeni(
*03pclose(,,pclosei(
===> *04x: Ab x. Zeichen zulaessige Zeichen fuer Var.-/Proc.-Namen
x=3 jedoch: letztes Zeichen
jeweils 2 Zeichen, 1.=Quell- und 2.=Zielcode
===> *041: Ab 1. Zeichen zulaessige Zeichen fuer Var.-/Proc.-Namen
*041aa,,bb,,cc,,dd,,ee,,ff,,gg,,hh,,ii,,jj,,kk,,ll,,mm
*041nn,,oo,,pp,,qq,,rr,,ss,,tt,,uu,,vv,,ww,,xx,,yy,,zz
*041AA,,BB,,CC,,DD,,EE,,FF,,GG,,HH,,II,,JJ,,KK,,LL,,MM
*041NN,,OO,,PP,,QQ,,RR,,SS,,TT,,UU,,VV,,WW,,XX,,YY,,ZZ
===> *042: Ab 2. Zeichen zulaessige Zeichen fuer Var.-/Proc.-Namen
===> *043: letztes Zeichen eines Variablen-/Befehlsnamens
===> *044: Sonderzeichen, welches ein eigenes Objekt darstellt
*043 A !A032: 3. Zeichen=1: Sonderzeichen, welches Klammerzu bewirkt
*042!!H !A033: 11. Zeichen=1: Beginn Kommentar
*044""JVC !A034: 11. Zeichen=2: Beginn Zeichenkette
*044##G- !A035: 9. Zeichen=1: ersetzen durch 10. Zeichen
*042$$GS !A036: 9. Zeichen=1: ersetzen durch 10. Zeichen
*042%% !A037: 9. Zeichen=2: ersetzen durch >< (nichts)
*042&& !A038
*044''H !A039
*044((CLS0
*044))ACM
*044**AN*& !A042 7=Sonderroutine * bei Normal, & bei Zeiger
*044++AUDOE !A043
*044,,ACPKET !A044
*044--AG- !A045
*042._AIV !A046 11. Zeichen=2: Zahl oder Microbefehlsbeginn
*044//AQHE !A047
*04200IV !A048
*04211IV !A049
*04222IV !A050
*04233IV !A051
*04244IV !A052
*04255IV !A053
*04266IV !A054
*04277IV !A055
*04288IV !A056
*04299IV !A057
*044::G: !A058
*044;;AET !A059
*044<<BCDFE !A060
*044==ABCDFE !A061:
*044>>BCDFE !A062
*044??G_ !A063
*044@@S1 !A064: 12. Zeichen=2: Funktionsbeginn(=1)
*044^^Z111Z201Z101 !A094: 11. Zeichen=4: Potenzieren
*042__A !A095
11. Zeichen=6: Klammerzuroutine
7. Zeichen=1: Typen-Abstellung in kysektyp$()
11. Zeichen=5: varpar&-Abhaengige Zeichenkette 0:(,1:(,
2:(,3:_[,4:(,...
12. Zeichen=1: Funktionsbeginn=0
5. Zeichen=1: V-Befehlspruefung bei Bedingung
6. Zeichen=1: V-Befehlspruefung bei Bedingung
7. Zeichen=1: L-Zuweisung bei Nicht-Bedingung
*6001 !-> Startaufloesung des Zielprogramms, 01=640x200x16 Farben
*70[
*71]
*72(
*73)
===>Beginn Kommentarteil einer Zeile
*80/*
===>Ende Kommentarteil einer Zeile
*81*/
===>Beginn Zeilennummernteil einer Zeile
*82/*Z
===>Ende Zeilennummernteil einer Zeile
*83*/
===>Fliesskommazeichen
*84.
*85<>= .1=.9==.1<>.9!=.1=>.9>=.1=<.9<=.
*86+= L( ,
*87+ V( "",
*88( ( ( _[( (
===>*91: Befehlsendekennzeichen fuer Zielcode ;
*91;
===>*92: Alternative fuer \
*92/
===>*93: Zeiger, ob ohne (=0) oder mit (=1) Protokolldatei <fspx.txt>
Datei muss manuell geloescht werden (mit KILL fspx.txt)
*930
===>*94: Satzende Zeichen fuer Zieldateisaetze (010 bei UNIX, normal 010013)
*94010
===>*95: Sichtbare Buttons, 1=SICHTBAR&EIN, 0=NICHT SICHTBAR, 2=AUS
*951000000012
===>*96: Debugmodus (1.+2. Zeichen); Debugpositionen ab 3. Zeichen
*9607000022232222
*99GFA-BASIC ST 3.5 nach GNU-C Linux 1.0.9 mit VGALIB
=====================================================================
,000SA
,000SL
,000IV
,050LDIV ,,Z-----+
,050LMOD ,,Z-----+
,050LXOR ,,Z-----+
,050LIMP ,,Z-----+
,050LEQV ,,Z-----+
,051SINPUT$
,052SMID$,,Z----------03
*** BEFEHLE: ***
,049-LINE ##_($INPUT,,Z-----)
,049-FORM ##_($INPUT,,Z-----)
,017-DEFAULT##break;,,Z------------21
,017-DEFAULT ##break;,,Z------------21
,055-STOP
===>056: wenn 2. Zeichenfolge nicht vorhanden in Zeile, dann wird ein
'{'-Zeichen angehaengt, ansonsten nichts
,056-ELSE##IF,,Z 331
,056-ELSE ##IF,,Z 331
,057-CASE ##3,,Z
,058-DATA
,059-MENU
,060-RETURN##}..return ,,Z-22----2
,060-RETURN ##}..return ,,Z-22----2
,061-ENDFUNC
,061-ENDFUNC
,062-ENDSELECT##3
,062-ENDSELECT ##3
===>063: Nach ##:
1.+2. : n2 Unter-Funktionsnummer
3.-8. : n3 MaxAnzahl-Basis
,063-FUNCTION ,,Z-21----2----11--2
,063-PROCEDURE ,,Z-21----2----12--1
----------------------------------------------------------------------
Ab ,,Z werden die Zusatzkennzeichen hinterlegt (bei allen Befehlen):
NACHFOLGEND: =-: Kennzeichen/Feld wird uebergangen
1. Z.: =.ekz. : Endekennzeichen (normalerweise ;)
2. Z.: =.zv. : Anzahl zu verschiebender Zeichen 0-9
3. Z.: =.kzv. =0: Keine SpaltenZeichenVerschiebung
=.kzv. =1: Nach aktueller Zeile RECHTS-Schiebung um .zv.> Zeichen
=.kzv. =2: Vor aktueller Zeile LINKS-Schiebung um <.zv. Zeichen
=.kzv. =3: sowohl <.zv. als auch .zv.>
=.kzv. =4: .zv. wird direkt der aktuellen Spalte zugewiesen
4. Z.: =.b. =0: Keine Bedingungszeile (aus = wird =)
=.b. =1: Eine Bedingungszeile (aus = wird ==)
5. Z.: =.lzd. : Anzahl direkt einzufuegender Leerzeichen vor dem Befehl
6. Z.: =.kka. =0: Kennzeichen, dass eine ]-Klammer zu schliessen ist
vor dem naechsten Zeichen aus ')-+*/,;<>= '
=1: Kennzeichen, dass eine )-Klammer zu schliessen ist
vor dem naechsten Zeichen aus ')-+*/,;<>= '
=2: Kennzeichen, dass eine )-Klammer zu schliessen ist,
sobald die aktuelle Zeile konvertiert wurde.
7. Z.: =.vtrp.=x: x=0..9: Anzahl Zeichen, um die versetzt der Typ
der naechsten Variablen im aktuellen Befehl zu
plazieren ist.
8. Z.: =.fkta.=x: x. AllgemeinFunktion A wird ausgefuehrt:
=1: letzter Parameter wird zusatzlich als aufnehmende
Variable an den Zeilenanfang kopiert
=> aus Prozedur eine Funktion machen, Bsp.:
aus FORM INPUT 20 AS a$
wird aS=FORM_INPUT(20,aS)
=C: Aktueller Befehlsname wird geloescht
9. Z.: =.sond.=1: .funk.=1 -> Sonderfunktion1
=2: .spec.=1 -> Sonderfunktion2
10. Z. : CLR obj$
11.+12. =.sop. x: Anzahl Sollparameter der Funktion
wenn < 0, werden fehlende mit -1 ergaenzt
wenn > 0, werden fehlende mit 0 ergaenzt
13.+14. =.fkt. : Sonderfunktion
15. .kkb. : 6.
16. .cka. : CLR kanalat$
17. .uprgz. : 1: Procedure aktiv, 2: Function aktiv => v.uprg.&
----------------------------------------------------------------------
===>001: Die erste Zeichenkette wird, wo gefunden, durch die zweite
ersetzt und ans Ende der Zeile angehaengt.
,001-DEC ##--,,Z;------C,,T(1234)
,001-EXIT##break; },,Z-36----C
,001-EXIT ##break; },,Z-36----C
,001-INC ##++,,Z;------C,,T(1234)
,001LVARPTR##,,Z-------C
,002-pclose##pclosei
,002-popen##popeni
,002-AT##AT,,Z-------C
,002-BOUNDARY ##BOUNDARY(,,Z-----)
,002-CIRCLE ##CIRCLE(,,Z-----)
,002-CLOSE ##CLOSE(,,Z-----+
,002-CLOSEW ##CLOSEW(,,Z-----+
,002-CLS ##CLS()
,002-COLOR ##COLOR(,,Z-----+
,002SDATE$##DATE()
,002SDATE$ ##DATE()
,002-DEFMOUSE ##DEFMOUSE(,,Z-----+
,002-EDIT##EDIT()
,002-ELLIPSE ##ELLIPSE,,Z----------06
,002IEOF##EOF_
,002-FULLW ##FULLW(,,Z-----+
,002-GRAPHMODE ##GRAPHMODE(,,Z-----+
,002SINKEY$##INKEY()
,002SINKEY$ ##INKEY()
,002IINSTR##INSTR,,Z-------C--03
,002-KILL ##KILL(,,Z-----+
,002-LOCATE ##LOCATE(,,Z-----+
,002-LOOP##} while (1!=2),,Z-32
,002-LOOP ##} while (1!=2),,Z-32
,002-LSET ##LSET(,,Z-----+
,002IMOUSEK##MOUSEK()
,002IMOUSEK ##MOUSEK()
,002IMOUSEX##MOUSEX()
,002IMOUSEX ##MOUSEX()
,002IMOUSEY##MOUSEY()
,002IMOUSEY ##MOUSEY()
,002-MUL ##MUL7(&,,Z-----+2
,002LNOT ##NOT(,,Z-----+
,002-OPENW ##OPENW(,,Z-----+
,002-OUT ##OUT(,,Z-----)
,002-PAUSE ##PAUSE(,,Z-----+
,002-PCIRCLE ##PCIRCLE(,,Z-----)
,002-PEEK##*
,002-PELLIPSE ##PELLIPSE,,Z----------06
,002FPI##PI0()
,002-QSORT ##QSORT(,,Z-----)
,002-RECALL ##RECALL(,,Z-----)---&
, ,,M.,.,.,.vzu.
,002-REPEAT##do {,,Z 21
,002-REPEAT ##do {,,Z 21
,002-RSET ##RSET(,,Z-----+
,002-SEEK ##SEEK(,,Z-----)
,002-SETCOLOR ##SETCOLOR(,,Z-----)
,002-THEN##) {,,Z------------------1
,002-THEN ##) {,,Z------------------1
,002STIME$##TIME()
,002STIME$ ##TIME()
,002LTIMER##TIMER()
,002LTIMER ##TIMER()
,003-INPUT##INPUT(,,Z-----)-C----14#C
,003-INPUT ##INPUT(,,Z-----)-C----14#C
===>004: Ergaenzt Zeichenfolge direkt vor Befehl:
,005-ADD ##+=
,005-SUB ##-=
,006-LPRINT##LPRINT(,,Z-----)-C----20#C
,006-LPRINT ##LPRINT(,,Z-----)-C----20#C
,006-PRINT##PRINT,,Z-------C----17#C
,006-PRINT ##PRINT,,Z-------C----17#C
,006-WRITE##WRITE(,,Z-----)-C----20#C
,006-WRITE ##WRITE(,,Z-----)-C----20#C
,007-ON ##MENU..ON_..switch (..) {
, ,,Z-------2-----C
,009LAND ##041&##&&
,009LOR ##041|##||
===>010: eventuelle Bedingungszeile
,010-IF## THEN,,Z 311
,010-IF ## THEN,,Z 311
===>011: Nach ##: 1.-3. Zeichen: < 256 = ASC-CODE-AUSFUEHRUNG
>=256 = Sonderroutine
ab 4. Zeichen: Zeichenfolge, welche vor aktueller
Zeile eingefuegt wird.
,011-REM##!,,Z-------C
,011-REM ##!,,Z-------C
,012-FOR##,,Z 31---------07
,012-FOR ##,,Z 31---------07
,014-GOSUB ##) {
,015-LOCAL ,,Z-------C
,016-WHILE ##while (,,Z 211 )
===>099: Befehl wird 1:1 durchgelassen ins Zielprogramm
,099FABS
,099LADD
,099IASC
,099SBIN$,,Z----------02
,099SCHR$
,099FCVD
,099FCVF
,099ICVI
,099LCVL
,099IEXIST
,099LFIX
,099-FN ##,,Z-------C1
,099FFRAC
,099LFRE
,099SHEX$,,Z----------02
,099IINP
,099LINT
,099SLEFT$
,099ILEN
,099LLOF
,099LMAX
,099IMENU
,099LMIN
,099SMKD$
,099SMKF$
,099SMKI$
,099SMKL$
,099LMUL
,099SOCT$,,Z----------02
,099-OPEN ,,Z----------04
,099IPOINT
,099LRANDOM
,099-READ ,,Z-------C----18
,099SRIGHT$
,099FROUND
,099ISGN
,099SSPACE$
,099FSQR
,099SSTR$,,Z----------03
,099SSTRING$
,099LSUB
,099STRIM$
,098SUPPER$
,099LXBIOS
,099FVAL
,002-VAR ##VAR ,,Z--------2
,099-XBIOS,,Z-----------3
--------nachfolgend abgeschlossene Befehle---------------------------
===>002: Wie 002, jedoch wird zusaetzlich eine Funktion ausgefuehrt
=> Funktionsnummer: Zeichen 1.-3. der Zeichenfolge nach ##
===>002: 1. Zeichenfolge wird durch 2. ab Zeichen 4 ersetzt.
zusaetzlich wird Sonderfunktion xx ausgefuehrt.
===>002: Die erste Zeichenfolge wird, wo gefunden, vollstaendig durch
die zweite ersetzt.
,002-ALERT ##ALERT(
, ,,Z-----)---&
, ,,T(12)(9)(12)(9)(12)
, ,,M..,..,..,..,.vzu.
,002-AS ##,
,002-BOX ##BOX(
, ,,Z-----)
, ,,T(12)(12)(12)(12)
,002-DIM ##,,Z-------C----04,,T
,002-DIV ##DIV0(&
, ,,Z-----)
, ,,T(12)(12)
,002-DO##do {,,Z 31
,002-DO ##do {,,Z 31
,002-END##exit(0)
,002-END ##exit(0)
,002-ENDIF##},,Z 320--------06,,T
,002-FILESELECT ##FILESELECT(
, ,,Z------------15
, ,,T(9)(9)(9)
,002SGET ##GETB(
, ,,Z-----)-1
, ,,T(12)(12)(12)(12)(9)
SGET:erste Zeichenfolge wird durch 2. Zeichenfolge ersetzt, zu-
saetzlich wird der letzte Parameter der Zeile als Ziel-
Parameter genommen.
Beispiel: aus GET 0,0,639,199,bgs$
wird bgsS=GETB(0,0,639,199,bgsS)
,002SSGET ##SGETB(
, ,,Z-----)-1
, ,,T(9)
SSGET:erste Zeichenfolge wird durch 2. Zeichenfolge ersetzt, zu-
saetzlich wird der letzte Parameter der Zeile als Ziel-
Parameter genommen.
Beispiel: aus SGET bgs$
wird bgsS=SGETB(bgsS)
,002-GOTO ##goto ,,Z------------13
,002-NEXT##},,Z 320--------06,,T
,002-NEXT ##},,Z 320--------06,,T
,002-PBOX ##PBOX(
, ,,Z-----)
, ,,T(12)(12)(12)(12)
,002-PLOT ##PLOT(
, ,,Z-----)
, ,,T(12)(12)
,002-PUT ##PUTB(
, ,,Z-----)
, ,,T(12)(12)(9)
,002-SPUT ##SPUTB(
, ,,Z-----)
, ,,T(9)
,002-SELECT ##,,Z ------C----19,,T(12349)
,002-SWAP ##,,Z-------C----05,,T(12349)(12349)
,002-SWITCH ##,,Z ------C----19,,T(12349)
,002-TEXT ##TEXT0(
, ,,Z-----)
, ,,T(12)(12)(9)
,002-UNTIL ##} while (!(
, ,,Z-221-)--------2--)
, ,,T(1234)
,002-WEND##},,Z 220--------06,,T
,007-MOUSE ##%..MOUSEl(..MOUSE(
, ,,Z-----)-2-&
, ,,M.vzu.,.vzu.,.vzu.
, ,,T(1234)(1234)(1234)
===>008: Aktueller Befehl wird zum Wiederholungsbefehl fuer die
folgenden Parameter:
aus CLR a&,b&,c& wird CLR(aI);CLR(bI);CLR(cI);
,008-CLR ##2=0,,Z------------03,,T(12345)
===>013: wie 012, jedoch nur fuer RESTORE.
,013-RESTORE ##gfaindex=0; ,,Z-------C----16
,099FCOS,,T(4)
,099FCOSQ,,T(4)
,099-STORE ,,Z----------03
,099-DEFFILL ,,Z-----------4,,T(12)(12)(12)(12)
,099-DEFLINE ,,Z-----------4,,T(12)(12)(12)(12)
,099-DEFTEXT ,,Z-----------5,,T(12)(12)(12)(12)(12)
,099-POLYFILL ,,Z----------05,,T(12)(12)(12)(12)(12)
,099FSIN,,T(4)
,099FSINQ,,T(4)
Sonderfunktionen:
=1 : DATA-ZEILEN
=2 : LOCAL
=3 : CLR
=4 : DIM
=5 : SWAP
=6 : NEXT
=7,8,9: FOR
=10 : GOSUB
=11,12: FUNCTION
=13 : GOTO
=14 : INPUT
=15 : FILESELECT
=16 : RESTORE
=17 : PRINT
=18 : READ -> DATAZEILEN
=19 : SELECT
=20 : WRITE
=21 : DEFAULT
=255 : DATA-ZEILEN